这件事可做,但是做的时候有点无奈而已。
我知道你一定会说,用 maven 就行了为什么还要用 ant,变态......不巧的是,某银行就有这方面的要求。所以还是回忆了一下这个技术。
首先原来的项目是基于 maven 的,所以第一步就是下载依赖,然后是打包成 spring 的 jar 包。
需要两个额外的 jar 包,放在 bin 目录下:
- maven-ant-tasks-2.1.3.jar
- spring-boot-antlib-2.0.5.RELEASE.jar
ant 使用 build 作为输出的目录结构,区别于 target。
下面是 build.xml 配置:
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 
 | <?xml version="1.0" encoding="UTF-8"?><project xmlns:artifact="antlib:org.apache.maven.artifact.ant"
 xmlns:spring-boot="antlib:org.springframework.boot.ant"
 name="projectName" default="default" basedir="bin">
 <description>Builds, tests, and runs the project dsolrcloud.</description>
 
 <!-- 配置开发环境 -->
 <property environment="env"/>
 
 <property name="spring-boot.version" value="2.0.5.RELEASE" />
 
 <property name="version" value="1.0"/>
 <property name="project" value="projectName"/>
 <property name="package" value="projectName"/>
 <property name="domain" value="com.zhoyq"/>
 
 <!-- 项目源代码目录 -->
 <property name="src.dir" location="${user.dir}/src/main/java"/>
 <!-- javac编译后生成的class文件路径 -->
 <property name="build.dir" location="${user.dir}/build/classes" />
 <!-- 最终生成jar包的路径 -->
 <property name="dist.dir" location="${user.dir}/build/dist"/>
 <!-- 项目配置文件路径 -->
 <property name="config.dir" location="${user.dir}/src/main/resources" />
 <!-- 项目生成JavaDoc文件路径  -->
 <property name="doc.dir" location="${user.dir}/build/doc"/>
 
 <!-- maven-ant-tasks 下载maven依赖jar包的存放路径  -->
 <property name="lib.dir" location="${user.dir}/build/dependency"/>
 
 <path id="classpath">
 <fileset dir="${lib.dir}" includes="**/*.jar"/>
 </path>
 
 <target name="clean" description="清理ant编译文件">
 <delete dir="${user.dir}/build" />
 </target>
 
 <target name="mkdir" description="建立文件夹">
 <mkdir dir="${dist.dir}"/>
 <mkdir dir="${build.dir}"/>
 <mkdir dir="${lib.dir}"/>
 <mkdir dir="${doc.dir}"/>
 </target>
 
 <target name="dependency" depends="mkdir" description="配置ant自动下载maven的依赖包">
 <!-- 下载maven依赖-->
 <path id="maven-ant-tasks.classpath" path="${user.dir}/bin/maven-ant-tasks-2.1.3.jar" />
 <typedef resource="org/apache/maven/artifact/ant/antlib.xml"
 uri="antlib:org.apache.maven.artifact.ant"
 classpathref="maven-ant-tasks.classpath" />
 
 <artifact:dependencies filesetId="mavenlib" pathId="mavenclasspath" useScope="runtime">
 <pom file="${user.dir}/pom.xml" />
 </artifact:dependencies>
 
 <copy todir="${lib.dir}">
 <fileset refid="mavenlib" />
 <mapper type="flatten" />
 </copy>
 </target>
 
 <target name="compile" depends="dependency" description="编译代码">
 <!-- 编译所有的Java代码 -->
 <javac srcdir="${src.dir}"
 destdir="${build.dir}"
 encoding="UTF-8"
 includeantruntime="no"
 excludes="**/test/*,**/test/bean/*,**/*.svn,*.svn"
 includes="**/*.java"
 source="1.8"
 target="1.8"
 deprecation="true"
 failonerror="true"
 debug="true">
 <classpath refid="classpath" />
 </javac>
 
 <!-- 把所有文件copy到build目录 -->
 <copy todir="${build.dir}">
 <fileset dir="${config.dir}" includes="**/*"/>
 </copy>
 </target>
 
 <!-- 生成Javadoc 文档 -->
 <target name="javadoc" description="生成Javadoc文档">
 <delete dir="${doc.dir}"/>
 <mkdir dir="${doc.dir}"/>
 <javadoc packagenames="com.zhoyq.*" sourcepath="${src.dir}" destdir="${doc.dir}"
 windowtitle="${project} Javadoc" use="yes"
 linksource="no" splitindex="yes" encoding="UTF-8"
 docencoding="GBK" locale="zh_CN">
 <classpath refid="classpath"/>
 <packageset dir="${src.dir}" defaultexcludes="yes">
 <include name="${domain}/${package}/**"/>
 </packageset>
 </javadoc>
 </target>
 
 <target name="package" depends="compile" description="打jar包" >
 <tstamp>
 <format property="TIME" pattern="yyMMddHHmm"/>
 </tstamp>
 <path id="spring-boot-antlib.classpath" path="${user.dir}/bin/spring-boot-antlib-2.0.5.RELEASE.jar" />
 <typedef resource="org/springframework/boot/ant/antlib.xml"
 uri="antlib:org.springframework.boot.ant"
 classpathref="spring-boot-antlib.classpath" />
 
 <spring-boot:exejar destfile="${dist.dir}/${project}-${version}-${TIME}.jar"
 classes="${build.dir}"
 start-class="com.zhoyq.App">
 <lib>
 <fileset dir="${lib.dir}" />
 </lib>
 </spring-boot:exejar>
 </target>
 
 <target name="default" depends="clean, package, javadoc">
 
 </target>
 
 </project>
 
 | 
修改对应参数,然后运行 ant 即可。